iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
IT 管理

API Gateway:微服務世界的守護者系列 第 23

Day 23 - 普米 & Grafana

  • 分享至 

  • xImage
  •  

Day 23 - Prometheus & Grafana:監控Apisix
確認Apisix /metrics端點
Apisix的/metrics端點不一定直接通過瀏覽器訪問。常見情況:

  • Cluster內服務間通信: 若Apisix部署在Kubernetes集群中,/metrics端點可能僅對集群內其他服務可見。
  • Internal Metrics: 對於內部指標,可利用Kubernetes Service Discovery按Namespace篩選,並通過Relabel配置篩選出目標端口的Metrics。
    配置Prometheus
    以下為一個Prometheus的配置文件範例,用於抓取Apisix的Metrics:
    scrape_configs:
  • job_name: 'apisix'
    static_configs:
    • targets:
      • 'apisix-service:9080' # 替換為實際的Service名稱和端口
        relabel_configs:
    • source_labels: [__meta_kubernetes_namespace]
      action: keep
      regex: your-namespace # 替換為Apisix部署的Namespace
    • source_labels: [__meta_kubernetes_service]
      action: keep
      regex: apisix # 篩選出Apisix Service
  • job_name: 為該Scrape Config設定一個名稱。
  • static_configs: 定義要抓取的目標。
  • relabel_configs: 用於篩選目標,確保只抓取Apisix的Metrics。
    在Grafana中配置資料來源
  • 新增Prometheus資料來源。
  • 設定Prometheus服務的地址。
    建立Grafana儀表板
  • 新增Panel: 選擇Graph面板。
  • 查詢: 使用PromQL查詢Apisix的Metrics。例如:sum(rate(apisix_http_requests_total{handler="proxy"}[5m]))計算過去5分鐘的請求數。
    範例儀表板
    你可以建立多個Panel來展示不同維度的指標,例如:
  • 請求數
  • 響應時間
  • 錯誤率
  • 上游服務的健康狀態
    注意事項
  • Prometheus版本和Apisix版本兼容性: 確保使用的Prometheus版本和Apisix版本兼容。
  • PromQL語法: 熟悉PromQL語法,以便撰寫複雜的查詢。
  • Kubernetes配置: 根據Kubernetes集群的配置調整Prometheus的配置文件。
    總結
    通過以上步驟,你可以成功配置Prometheus和Grafana,對Apisix進行深入的監控。這有助於你了解Apisix的性能,及時發現問題並進行優化。
    建議
  • 定制化儀表板: 根據你的需求,定制化Grafana儀表板,展示最關心的指標。
  • 告警: 配置告警,在指標異常時收到通知。
  • 多維度分析: 利用PromQL的標籤功能,進行多維度分析。
    更多資訊
  • Prometheus官方文档:https://prometheus.io/docs/
  • Grafana官方文档:https://grafana.com/docs/
  • Apisix官方文档:[已移除無效網址]

排除 static 的寫法

好的,很高興能為您服務!
關於去掉 Prometheus 配置中的 static 設定
在 Prometheus 配置中,去掉 static 設定通常意味著我們希望動態地發現要監控的目標。這在 Kubernetes 環境中特別常見,因為服務的 IP 和端口會經常變化。
為何要去掉 static 設定?

  • 動態發現: Kubernetes Service Discovery 可以讓 Prometheus 自動發現新的 Pod 和 Service,並開始監控。
  • 靈活性: 避免手動維護目標列表,減少配置錯誤的可能性。
  • 擴展性: 隨著系統規模的擴展,動態發現能更輕鬆地管理監控目標。
    如何去掉 static 設定?
  1. 利用 Kubernetes Service Discovery:
  • 配置 Prometheus: 在 Prometheus 的配置文件中,使用 kubernetes_sd_configs 來配置 Kubernetes Service Discovery。這會讓 Prometheus 定期從 Kubernetes API Server 獲取 Service 和 Pod 的信息。
  • 標籤選擇器: 通過設置標籤選擇器,你可以精確地選擇要監控的 Service 和 Pod。
    範例配置文件:
    scrape_configs:
  • job_name: 'kubernetes-pods'
    kubernetes_sd_configs:
    • role: pod
      relabel_configs:
    • source_labels: [__meta_kubernetes_namespace]
      action: keep
      regex: your-namespace
    • source_labels: [__meta_kubernetes_service]
      action: keep
      regex: apisix
  • role: pod: 指定要發現 Pod。
  • relabel_configs: 使用 Relabeling 規則來篩選出我們感興趣的 Pod。
  1. 使用其他 Service Discovery 機制:
  • Consul: 如果使用 Consul 作為 Service Discovery,可以配置 Prometheus 使用 Consul SD。
  • etcd: 對於使用 etcd 作為 Service Discovery 的環境,也可以配置 Prometheus 使用 etcd SD。
    注意事項
  • 標籤選擇器: 正確的標籤選擇器對於精確地發現目標至關重要。
  • Relabeling 規則: Relabeling 規則可以幫助你對發現的目標進行進一步的處理和過濾。
  • Prometheus 版本: 確保使用的 Prometheus 版本支持你所選擇的 Service Discovery 機制。
    其他注意事項
  • 靜態配置與動態發現的結合: 在某些情況下,你可能需要同時使用靜態配置和動態發現。例如,對於一些關鍵的服務,你可能希望使用靜態配置來確保它們被監控到。
  • 性能考慮: 如果你的集群非常大,動態發現可能會對 Prometheus 造成一定的負載。可以通過調整 Prometheus 的配置和硬件資源來緩解這一問題。
    總結
    去掉 static 設定,採用動態發現的方式,可以讓 Prometheus 更靈活地適應 Kubernetes 環境中的變化。這對於大規模部署的微服務架構來說尤為重要。

上一篇
Day 22 - 體驗 OpenTelemetry use Tempo & Prometheus
下一篇
Day 24 - K8s APISIX Autoscale 設定
系列文
API Gateway:微服務世界的守護者24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言